package Demo2;

public class demo5 {
    public void bubbleSort(int[] array) {
        // 外层循环控制排序的轮数
        for (int i = 0; i < array.length - 1; i++) {
            // 标志位，用于检测是否有交换发生
            boolean flag = true;

            // 内层循环进行相邻元素的比较和交换
            for (int j = 0; j < array.length - 1 - i; j++) {
                // 如果当前元素大于下一个元素，则交换它们
                if (array[j] > array[j + 1]) {
                    flag = false; // 设置标志位为 false，表示发生了交换
                    swap(array, j, j + 1);
                }
            }

            // 如果在某一轮排序中没有发生交换，说明数组已经有序，提前退出循环
            if (flag) {
                break;
            }
        }
    }

    private void swap(int[] array, int pos1, int pos2) {
        // 交换数组中两个位置的元素
        int temp = array[pos1];
        array[pos1] = array[pos2];
        array[pos2] = temp;
    }
}
